package forza4;

import org.eclipse.swt.SWT;
import org.eclipse.wb.swt.SWTResourceManager;

import forza4.Impostazioni.Cella;
import forza4.Impostazioni.Pedina;

public class Partita {
	private Board board;
	private Giocatore giocatore1;
	private Giocatore giocatore2;
	private Giocatore turno;
	private FrmMain mainForm;
	private int mossaGUI,mossaProlog;
	private boolean attesaProlog;
	
	public boolean isAttesaProlog() {
		return attesaProlog;
	}

	public void setAttesaProlog(boolean attesaProlog) {
		this.attesaProlog = attesaProlog;
	}

	public Partita(FrmMain mainForm){
		this.mainForm=mainForm;
		attesaProlog=false;
	}
	
	public void start()
	{
		turno=giocatore1;
		gioca();
	}
	
	public void gioca()
	{
		if (turno instanceof GiocatoreProlog)
		{
			mainForm.setStato("Sto pensando...");
		}
		else
		{
			mainForm.setStato("Fai la tua mossa!");
		}
		turno.eseguiMossa();
	}
	
	public Board getBoard()
	{
		return board;
	}
	
	public Giocatore getTurno()
	{
		return turno;
	}
	
	public void turnoSuccessivo()
	{
		Quattro quattro = new Quattro();
		if (!board.controlloVittoria(quattro))
		{
			if (board.getNumeroGettoni()!=42)
			{
				if (turno==giocatore1)
					turno=giocatore2;
				else
					turno=giocatore1;
				gioca();
			}
			else
				mainForm.setStato("Parita!");	
		}
		else
		{
			if (quattro.getGettone()==Cella.ROSSO)
				mainForm.setStato("Ho vinto!");
			else
				mainForm.setStato("Ho perso!");
			mainForm.startLampeggio(quattro);
		}
		
	}
	
	public void setComputerVsGiocatore()
	{
		giocatore1=new GiocatoreProlog(board,this,true);
		giocatore2=new Giocatore(board);
		giocatore1.setPedina(Pedina.ROSSO);
		giocatore2.setPedina(Pedina.GIALLO);
		mainForm.setGettoneComputer(Pedina.ROSSO);
		mainForm.setGettoneGiocatore(Pedina.GIALLO);
	}
	
	public void setGiocatoreVsComputer()
	{
		giocatore1=new Giocatore(board);
		giocatore2=new GiocatoreProlog(board,this,false);
		giocatore1.setPedina(Pedina.GIALLO);
		giocatore2.setPedina(Pedina.ROSSO);
		mainForm.setGettoneComputer(Pedina.ROSSO);
		mainForm.setGettoneGiocatore(Pedina.GIALLO);
	}
	
	public void setmossaProlog(int colonna,Statistica stat)
	{
		this.mossaProlog=colonna;
		int riga=board.aggiungiPedina(colonna, turno);
		mainForm.mossaGiocatore(riga, colonna, turno);
		mainForm.setStatistica(stat);
		turnoSuccessivo();
	}
	
	public void setmossaGUI(int colonna)
	{
		if (!(turno instanceof GiocatoreProlog))
		{
			this.mossaGUI=colonna;
			int riga=board.aggiungiPedina(colonna, turno);
			mainForm.mossaGiocatore(riga, colonna, turno);
			turnoSuccessivo();
		}
	}

	public void initBoard() {
		board=new Board();
	}
}
